// 配置路由的地方
import Vue from 'vue'
import VueRouter from 'vue-router'
// 引入路由信息
import routes from './routes'

// 引入store
import store from '../store'

// 使用插件
Vue.use(VueRouter)

// 配置路由
let router = new VueRouter({
  routes,
  // 切换页面的滚动行为
  scrollBehavior(to, from, savedPosition) {
    return { y: 0 }
  },
})

// 设置全局导航守卫
router.beforeEach(async (to, from, next) => {
  // 用户登录了才会有token,没有登录不会有token
  let token = store.state.user.token
  //拿到用户的名字
  let name = store.state.user.userInfo.name
  if (token) {
    // 用户已经登录, 就不能再去/login了
    if (to.path == '/login' || to.path == '/register') {
      next('/home')
    } else {
      // 登录了，去的不是login 而是 home|search|detail|shopcart
      // 如果用户名已有
      if (name) {
        next()
      } else {
        // 没有用户信息，派发action让仓库存储用户信息再跳转
        try {
          // 获取用户信息成功
          await store.dispatch('getUserInfo')
          // 放行
          next()
        } catch (error) {
          // token失效了获取不到用户信息，清除过期的token，需要重新登录
          await store.dispatch('userLogOut')
          next('/login')
        }
      }
    }
  } else {
    // 未登录不能去交易相关的，不能去支付，也不能去个人中心
    let toPath = to.path
    if (toPath == '/trade' || toPath == '/pay' || toPath.indexOf('/center') != -1){
      next('/login')
    }else{
      next()
    }
  }
})


export default router
